package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.project.bean.GradeBean;
import com.project.bean.RoleBean;

import java.util.List;

public interface IRoleService {

    /**
     * 修改用户角色
     * @param userId 用户id
     * @param roleIdArray 角色id集合
     * 根据用户id，角色id集合，修改用户角色
     * 先删除原来的所有角色，再添加新的角色集合
     */
    void updateRole(Integer userId,Integer[] roleIdArray);

    /**
     * 查询所有角色信息
     * @return 角色集合
     * 角色信息：角色编号，角色名称
     */
    List<RoleBean> findAll();

    /**
     * 分页查看所有角色
     * @param  pageNO 页码
     * @return 分页对象
     * 角色信息：角色编号，角色名称
     */
    IPage<RoleBean> cutAll(Integer pageNO);

    /**
     * 添加角色
     * @param roleName 角色名
     * @param gradeIdArray 权限Id集合
     */
    void add(String roleName,Integer[]gradeIdArray);

    /**
     * 按id删除角色
     * @param roleId 角色Id
     * 处理：
     * 1. 删除角色拥有的权限（角色权限中间表记录）
     * 2. 删除角色拥有的用户（用户角色中间表记录）
     * 3. 按角色Id删除角色
     */
    void del(Integer roleId);

    /**
     * 查看角色权限
     * @param roleId 角色id
     * 根据角色id查看角色信息和角色拥有的权限
     * @return 角色对象{角色信息、权限信息}
     */
    RoleBean findById(Integer roleId);

    /**
     * 修改角色权限
     * @param roleId 角色Id
     * @param gradeIdArray 权限id集合
     * 按id角色名、权限id集合，修改角色权限
     */
    void updateGrade(Integer roleId,Integer[]gradeIdArray);
}
